Internet applications utilize different distributed systems that aim to place the content and other resources close to the final user in order to minimize the delay and the bandwidth used. Such distributed systems include:                Content Delivery Networks (CDNs), employed to save traffic in the central server, and, at the same time, increase the performance observed by the users;        Cloud Computing services used to outsource the computation of expensive tasks to powerful machines in central datacenters. In the last years, the concept of Mobile Edge Computing (MEC) has been introduced. On it, low capacity devices are allowed to assign small tasks servers placed close to them;        Peer to Peer (P2P) systems where the final users connect directly to a set of peers in order to obtain different resources. These resources include the traditional distribution of content (e.g., Bittorrent), the online transmission of video streams (e.g., Acestream or Sopcast) or the distribution of software updates (e.g., the P2P distribution of Windows 10 updates).        
All of these distributed systems address the problem unique to content distribution networks of assigning the correct resource to the correct user. In most cases, they use simple solutions, in particular, the selection of the resource that is geographically closer to the user (typically used by CDNs and other Anycast services) and the random peer selection usually performed in the P2P network. The metrics used are therefore simple and typically constant. While geographic proximity is related to Round Trip Time (RTT), other metrics are not considered.